The present invention relates generally to image forming equipment and is particularly directed to printers of the type which halftone color or monochrome images. The invention is specifically disclosed as a printer that provides a 10-bit unadjusted stochastic threshold array, and applies a Transfer Function Table at run time to the unadjusted array to derive an 8-bit adjusted threshold array, thereby improving perceptual printer response while saving memory space.
Threshold arrays have been used for years to accomplish halftoning for image forming equipment, such as printers. Modern printers generally use a threshold array in a tiling manner to halftone a particular square or rectangular portion of an image bitmap that is to be printed, and then move the threshold array to the next position as if placing a new tile over the bitmap in an adjacent location. Video displays also can operate using tiled threshold arrays. Threshold arrays include array elements that have numeric values that range from the lightest gray scale shade to the darkest gray scale shade. As the light intensity (or a particular color intensity) increases, the more pixels that will be illuminated in a display device such as a liquid crystal display, or the fewer number of dots that will be printed in the case of a printer. This is accomplished by comparing the actual pixel intensity values against the array element numeric values, and for example, all dots will be printed for threshold levels at array element locations that have a numeric value less than the dot intensities according to the input image information.
The numeric values of the array elements for threshold arrays in conventional printers are normally integer values that define a plurality of gray levels, and the most typical range of numeric values is from 1 through 255, which are represented by 8-bit binary numbers. Since 8-bit linear or unadjusted threshold arrays produce printed responses that typically do not match the desired linear human perceptual response, it has been common for most printers to provide adjusted (or corrected) threshold arrays for each color that can be printed by that particular print engine. In color printers, for example, this implies that there would be a minimum of three different adjusted threshold arrays for the xe2x80x9cordinaryxe2x80x9d colors cyan, magenta, and yellow, and further, many color printers also provide black ink, thereby requiring a fourth adjusted threshold array. (Some printers may provide a single threshold array to be used for all colors, but the visual results are not pleasing.) Such adjusted threshold arrays may have array elements of integer numeric values, or to achieve greater precision, the numeric values could each be represented by a floating point number. Floating point values will require, of course, much more storage space in the memory system of a printer than the use of integer values. One main reason that 8-bit integer values are typically used for the gray level representations is that standard memory devices provide xe2x80x9cchunksxe2x80x9d of memory in bytes, which each comprise a set of 8 bits.
Early printers may have used unadjusted threshold arrays to produce their final printed outputs, however, such printers usually lose tone levels, as well as exhibit crude at best approximations to the desired perceptual tone levels. While some print engines may produce reasonable perceptual responses by use of unadjusted threshold arrays, that is not the general case, and adjusted threshold arrays are much more common.
To develop a linearized halftone screen, it is common to start with a grid of equal proportions of the numbers between one (1) and the maximum value, and then print squares representing each of the tone levels. The printed squares can be then measured with respect to the parameter that is desired to be linearized. The series of measured values can then be assembled and analyzed to form an adjusted (or corrected) halftone screen or threshold array that is linear, i.e., having a response that is linear with respect to human visual perception. The new screen or array is formed for a given paper type, color plane, printing mechanism, etc., and usually has been stored in ROM to be used when printing.
The maximum value of the equal proportions used in generating the unadjusted threshold array may not be the same as the maximum tone level. However, the maximum values of the adjusted screen or threshold array and the tone level must be the same. It very rarely occurs that using an unadjusted screen yields a set of equally visually spaced discernible intensity levels, which is the property of a xe2x80x9cperfectxe2x80x9d halftone screen. Thus, it is necessary to xe2x80x9ccorrectxe2x80x9d (or adjust) this screen.
In correcting the screen (or threshold array), the first thing to be achieved is determining a set of distinct intensity levels, as many as the number of tone levels (i.e., gray scale levels in many cases). These intensity levels must be analyzed and modified so that they are as visually distinct as possible. This usually is done by linearizing the screens in CIE L* space. Historically, correction (or adjustment) of the screens or threshold arrays has been done using one of two different methods. The first method is referred to as the xe2x80x9carray mappingxe2x80x9d method, which stores a one-dimensional array that maps each of the possible values in the uncorrected (or unadjusted) screen or threshold array to the appropriate value in the corrected (or adjusted) screen or threshold array. Each of the values in the unadjusted screen or threshold array is used as an index to the array map, and the adjusted screen or threshold array is formed therefrom. This method saves memory space, but can be restrictive concerning the number of dots that must be placed on the page for different tone levels. For example, if the uncorrected (or unadjusted) screen or array has dimensions of 128xc3x97128, and if there are 256 tone levels, each tone level must contain 64 more dots than the previous level, assuming that the unadjusted screen or array contains equal proportions of each value (which must be true if it is to be used as a base to transition to adjusted (or corrected) arrays).
Since being restricted to adding a fixed number of dots at each level reduces the number of distinct intensity levels, accuracy will suffer. This accuracy problem can be alleviated by increasing the range of values in the unadjusted screen or array until the maximum number of unique levels is obtained. Unfortunately, this also increases the size of both the one-dimensional arrays and the unadjusted screens, which are both stored in the printer when using the array mapping method. The size of the one-dimensional arrays increases proportionally with the bit size of the uncorrected (or unadjusted) screens or threshold arrays.
The second historical correcting method is called the xe2x80x9ccomplete storagexe2x80x9d method. This performs the complete correction of the threshold arrays offline, and all of the adjusted (or corrected) threshold arrays are stored in the ROM of the printer. No correction takes place at run time. This method requires a large amount of memory space; however, its advantage is that the adjusted (or corrected) threshold arrays can be manipulated as necessary to obtain the greatest number of visually discernible intensity levels, since all correction is done offline (i.e., at the factory). Increase of accuracy does not mean an increase of the memory space required for storage. Nevertheless, the memory storage space is quite large for any threshold arrays of meaningful precision.
In printers that provide adjusted threshold arrays, a separate transfer function is typically determined for each color that can be printed, and additionally, for each type of print media that will be printed on. The benefits of using adjusted threshold arrays include assuring that there will be 256 unique tone levels (e.g., for 8-bit integer gray levels), and further, to produce tone levels as close as possible to each desired perceptual level. However, a separate array must be generated for each combination of color and type of paper, and therefore, a large amount of memory is required to store each of the separate, adjusted threshold arrays. More detailed examples of the memory requirements are provided hereinbelow.
Since threshold arrays provide an extremely fast way to halftone an image, various types of halftoning techniques have been developed that all use threshold arrays, including cluster-dot ordered dithering (known as xe2x80x9cclassicalxe2x80x9d screening), dispersed-dot ordered dithering (known as xe2x80x9cBayerxe2x80x9d screening), dispersed-dot unordered dithering (known as stochastic screening), or another form of stochastic screening, using cluster-dot unordered dithering. For printers that must quickly process image data for an incoming print job, this extremely fast method using threshold arrays so far seems to be the optimum method to halftone various types of images. It would be very beneficial to further streamline the process of providing corrected threshold arrays, especially when that process can also save memory space within the printer""s memory circuits.
Accordingly, it is a primary advantage of the present invention to provide an image forming apparatus such as a printer that stores a minimum number of threshold arrays in non-volatile memory, and at run time creates adjusted threshold arrays to meet the precise print job requirements, such as for the appropriate colors and appropriate types of print media.
It is another advantage of the present invention to provide an image forming apparatus such as a printer that stores a minimal number of unadjusted threshold arrays consisting of numeric elements that have a greater precision than the numeric elements of adjusted threshold arrays that are derived at run time, in which, however, the adjusted threshold arrays benefit from the greater precision of the unadjusted arrays to more nearly match the printer""s response to the human visual perceptual levels.
It is yet another advantage of the present invention to provide an image forming apparatus such as a printer that stores a minimum number of unadjusted threshold arrays along with a set of Transfer Function Tables that can quickly produce a set of adjusted threshold arrays that are minimal in number to reduce memory requirements, and further that are produced for the specific print job requirements, such as the appropriate colors to be printed as well as the type of print media to be printed upon.
It is still a further advantage of the present invention to provide an image forming apparatus such as a printer that stores a minimal number of unadjusted threshold arrays in a packed memory configuration to minimize the amount of memory space required in a non-volatile memory circuit, and to provide an unpacking routine that quickly re-configures the unadjusted threshold array data in a format that allows quick access and application of a set of Transfer Function Tables to derive a set of adjusted threshold arrays to be stored in the printer""s RAM circuit.
It is still another advantage of the present invention to provide an image forming apparatus such as a printer having a minimal number of unadjusted threshold arrays stored in a printer""s non-volatile memory circuit in a packed data format to minimize the amount of space required in the printer""s ROM storage circuit, and to provide an unpacking and transfer function application routine that quickly unpacks the unadjusted threshold array data and applies a Transfer Function Table that generates a set of adjusted threshold arrays at run time, in which these adjusted threshold arrays are generated for the precise print job requirements, such as appropriate colors and type of print media to be printed upon.
It is yet a further advantage of the present invention to provide a set of packed data stochastic threshold arrays that are stored in a printer""s non-volatile memory circuit, in which these threshold arrays comprise array elements having numeric values of a greater precision than the precision of numeric elements for later derived adjusted threshold arrays that are generated at run time by the printer after application of a set of Transfer Function Tables that convert the unadjusted threshold arrays into adjusted threshold arrays.
Additional advantages and other novel features of the invention will be set forth in part in the description that follows and in part will become apparent to those skilled in the art upon examination of the following or may be learned with the practice of the invention.
To achieve the foregoing and other advantages, and in accordance with one aspect of the present invention, an improved printer is provided that stores a minimal number of unadjusted stochastic threshold arrays in non-volatile memory, in which a single stochastic threshold array is provided per ordinary color of the printer. For example, if the printer is a black and white printer only, then only a single stochastic threshold array would be required. This single unadjusted array is used to determine the printer""s light intensity printed response, which will not likely provide an ideal target response as compared to the perceptual intensity levels of the human eye. Accordingly, the uncorrected threshold array needs to be adjusted before the array is used to halftone image data in the form of a print job.
The unadjusted array for a particular color is stored in the printer""s ROM (Read Only Memory) and preferably is stored in a packed configuration to save memory space. A set of Transfer Function Tables (TFT""s) also are provided for the various types of print media that can be expected for use with a particular printer, as well as for various combinations of ordinary colors and specialized colors. For example, if the uncorrected threshold array represents the color magenta, and if the print media type is xe2x80x9cplain paper,xe2x80x9d and further if the type of printing that is to be accomplished is to use the xe2x80x9cordinaryxe2x80x9d magenta shading, then a single Transfer Function Table is applied to the unadjusted threshold array, which produces a single corrected threshold array that will be the target array for halftoning the color magenta when printing this particular print job. On the other hand, if a xe2x80x9cdilutedxe2x80x9d magenta color ink is to be utilized (for example, if a color xe2x80x9cphoto cartridgexe2x80x9d is used in a particular style of ink jet color printer), then a different TFT will be applied to the unadjusted threshold array to produce a different adjusted threshold array (i.e., for diluted magenta ink) that will finally be used at run time to halftone this particular print job. This is just one example of the various combinations of color shades and print media types that can be utilized with a modern color printer.
The mere use of unadjusted threshold arrays will typically produce printed shades that are too dark as compared to the incremental shade differences as perceived by the human eye. The Transfer Function Tables are used to convert the unadjusted threshold data into adjusted threshold data for each color and type of print media. The TFT that is to be applied essentially acts as a look-up table in which the original numeric value of a particular array element in the unadjusted threshold array is found, and a different numeric value is then substituted therefor. In short, for every array element position that the original numeric value appeared, the substituted numeric value is then placed in the same row and column position of the derived, adjusted threshold array. This occurs very quickly at run time for each print job received by the printer that requires halftoning.
In the preferred mode of the present invention, the unadjusted threshold array comprises a 128 row by 128 column sized array, and each element of this array comprises a 10-bit number having a precision of one part in 1024. When the TFT is applied to this unadjusted array, the resulting numeric values for the adjusted array elements are produced as 8-bit numeric values, which provides a somewhat lower precision of one part in 256. This greater precision in the originating unadjusted array provides more perceptual levels of intensity (i.e., color brightness), which is particularly important at the lighter shades of each color. This greater number of possible printed gray levels by using the 10-bit numeric data is used to advantage, and the adjusted threshold arrays derived therefrom will add only the number of dots per gray level (i.e., per differential threshold array level) that are required to provide a printer response that very nearly approximates the human eye perceptual differential response of intensity. In essence, the 8-bit adjusted threshold arrays used in printing the colors effectively have the precision of 10-bit data.
Since most modem microprocessor and memory circuits are based upon 8-bit bytes, use of 10-bit data normally requires a 2-byte data word for storage in the memory circuit. Such 2-byte data words are easily accessed for each individual 10-bit data numeric value. However, in the preferred embodiment of the present invention, the unadjusted threshold arrays are stored in a packed data format, such that contiguous memory locations are used to store each 10-bit numeric value with no empty bits spaced therebetween. This saves over 35% of the memory space in the printer""s non-volatile memory required for storing the unadjusted threshold arrays. Data compression techniques could alternatively be used to save memory space for the unadjusted threshold array.
At run time, it is preferred to unpack this 10-bit data for the unadjusted threshold arrays by removing each 10-bit numeric value from the packed memory locations and placing it into a different 2-byte set of memory locations, which then makes it very easy to access this 10-bit data value merely by scrolling through the various memory locations. The appropriate Transfer Function Table is then applied to each unadjusted threshold array, and the output of this TFT application is an 8-bit numeric value for each array element in the derived adjusted threshold array that will be used for printing that particular color/media combination. Since the adjusted threshold array uses 8-bit numeric data, this will perfectly correspond to a single byte of memory space, thereby most efficiently packing this adjusted array data.
It is further preferred to unpack each array element from the unadjusted threshold array and then apply the appropriate Transfer Function Table for that particular numeric value for the array element position in question, all in a single operation for each of these array row and column elements, and then have the converted data value stored in the appropriate row and column elements of the resulting adjusted threshold array. This is a more efficient use of the printer""s processing time, and a routine is provided hereinbelow to describe this procedure in more detail.
The principles of the present invention can be applied to any type of unadjusted threshold arrays, regardless of how they are derived (e.g., stochastic, dot-cluster, etc.). Moreover, the present invention will produce a memory savings in the printer regardless of the data size of the unadjusted threshold arrays and the resulting adjusted threshold arrays (i.e., for adjusted arrays having any xe2x80x9cusefulxe2x80x9d precisionxe2x80x94not necessarily for 2-bit or 3-bit data) by use of the Transfer Function Tables as described hereinbelow. Finally, the present invention can be used to advantage regardless of whether or not the data is packed or unpacked, since both a memory storage space savings is exhibited, as well as an increase in efficiency by using less processing time to derive the adjusted threshold arrays at run time, as compared to other methodologies. Finally, the present invention can be used to advantage to provide corrected threshold arrays regardless of the shape of the response curves of any of the colors when utilizing a particular print engine""s response curve for its unadjusted threshold array data.
It will be understood that the principles of the present invention not only apply to printers, but also apply equally well to other types of image forming apparatuses including copiers and video displays that use halftoning techniques. Of course, many video monitors do not require halftoning, since they can be designed to directly apply the correct intensity of the individual primary colors for each pixel. However, certain types of video displays may well require halftoning for a correct or pleasing visual appearance of images. Such video displays include liquid crystal displays (LCD""s) and light emitting diode (LED) displays. Moreover, even some cathode ray tube (CRT) displays may use halftoning, especially for older such CRT""s.
Still other advantages of the present invention will become apparent to those skilled in this art from the following description and drawings wherein there is described and shown a preferred embodiment of this invention in one of the best modes contemplated for carrying out the invention. As will be realized, the invention is capable of other different embodiments, and its several details are capable of modification in various, obvious aspects all without departing from the invention. Accordingly, the drawings and descriptions will be regarded as illustrative in nature and not as restrictive.